﻿using BrainTechLLC;
using System;
using System.Collections.Generic;
namespace Mud.EmlenMudMain
{
    [FlagsAttribute]
    public enum AddCommands
    {
        none = 0,
        dont_echo = 1,
        wont_echo = 1 << 1,
        will_echo = 1 << 2,
        wont_supress_ga = 1 << 3,
        will_supress_ga = 1 << 4,
        do_echo = 1 << 5,
        echo_off_str = 1 << 6,
        echo_on_str = 1 << 7,
        go_ahead = 1 << 8,
        linemode_on = 1 << 9,
        linemode_off = 1 << 10
    }

    [FlagsAttribute]
    public enum ClientCommandFlags
    {
        none = 0,
        echo_on = 1,
        echo_off = 1 << 1,
        echo_partial_on = 1 << 2,
        clear_screen = 1 << 3
    }


#if NO_SILVERLIGHT
    public interface IDescriptorData
    {
        CharacterData character { get; set; }
        void CheckBytesIncoming();
        void ClearCommandFlags();
        AddCommands CmdsToAdd { get; set; }
        ClientCommandFlags CommandFlags { get; set; }

        void ConnectAnsi();
        ConnectedState CurrentPlayerGameState { get; set; }
        System.Net.Sockets.TcpClient TcpConnection { get; set; }
        void EchoOff();
        void EchoOn();
        void EchoPartialOn();
        void EnqueueNewCommand(System.Text.StringBuilder sbText);
        bool ConnectionNeedsClosing { get; set; }
        string GetLastCommand();
        string GetNextCommand();
        string GetPrompt();

        Guid guid { get; set; }
        System.Collections.Queue Inbf { get; set; }
        System.Collections.Queue Inbuf { get; set; }
        bool Insert { get; set; }

        bool IsCommandFlagSet(ClientCommandFlags cf);
        int Location { get; set; }

        int NCommandHistoryIndex { get; set; }
        System.Collections.Queue Outbuf { get; set; }
        string Partialstring { get; set; }
        object PEdit { get; set; }
        int PicWait { get; set; }
        CharacterData Realchar { get; set; }
        int Repeat { get; set; }
        List<string> RgCommandHistory { get; set; }
        void send_text(System.Text.StringBuilder sb);
        void send_text(string sz);
        void SendBytesOutgoing();
        void SendClear();
        List<long> SnoopedBy { get; set; }
        CharacterData Switchedchar { get; set; }
        string SzStoredName { get; set; }
        int TimeoutCounter { get; set; }
        InterfaceType UsingInterface { get; set; }

        int Wrong_pw { get; set; }
    }
#endif
}
